﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QuanLyThuVien.Business;
using System.Windows.Forms;

namespace QuanLyThuVien.DataAccess
{
    /// <summary>
    /// Lớp này thao tác với bảng tbSach trong CSLD
    /// Thực thi các câu lệnh : insert, update, delete...
    /// </summary>

    class DauSachDAL
    {
        clsDatabase db = new clsDatabase();
        /// <summary>
        /// Thêm mới sách
        /// </summary>
        /// <param name="busSach">Đối tượng của lớp Sách trong Business</param>
        public void ThemMoiSach(DauSach busSach)
        {
                db.ThuThiSQL("insert into tbDauSach values (N'" +
                busSach.MaDauSach + "',N'" +
                busSach.TenSach + "',N'" +
                busSach.MaTG + "',N'" +
                busSach.MaNXB + "',N'" +
                busSach.NamXB + "',N'" +
                busSach.ChuyenNganh + "','" +
                busSach.SoLuong + "',N'" +
                busSach.GhiChu + "')");
        }

        /// <summary>
        /// Sửa sách
        /// </summary>
        /// <param name="busSach">Đối tượng của lớp Sách trong Business</param>
        public void SuaSach(DauSach busSach)
        {
            db.ThuThiSQL("update tbDauSach set TenSach =N'" +
                busSach.TenSach + "',MaTG=N'" +
                busSach.MaTG + "',MaNXB=N'" +
                busSach.MaNXB + "',NamXuatBan=N'" +
                busSach.NamXB + "',ChuyenNganh=N'" +
                busSach.ChuyenNganh + "',soLuong='" +
                busSach.SoLuong + "',GhiChu=N'" +
                busSach.GhiChu + "'where MaDauSach='" +
                busSach.MaDauSach + "'");
        }

        /// <summary>
        /// Xóa thông tin sách
        /// </summary>
        /// <param name="MaDS">Mã đầu sách muốn xóa</param>
        public void XoaSach(string MaDS)
        {
            db.ThuThiSQL("delete from tbDauSach where MaDauSach=N'" + MaDS + "'");
        }

        /// <summary>
        /// Lấy dữ liệu từ bảng tbSach lên DataGridView 
        /// </summary>
        /// <param name="dg">DataGridView sách</param>
        public void LayDLLenDataGridView(DataGridView dg)
        {
            db.LoadLenDG(dg, "select * from tbDauSach");
        }

        /// <summary>
        /// Kiểm tra xem mã đầu sách có trùng hay không để thêm mới một loại sách
        /// </summary>
        /// <param name="maDS">Mã đầu sách nhập vào để kiểm tra</param>
        /// <returns>Trả giá trị false nếu chưa tồn tại mã đầu sách, true nếu mã đầu sách đã tồn tại</returns>
        public bool KiemTraDL(string maDS)
        {
            return db.KiemTra("select count(*) from tbDauSach where MaDauSach=N'" + maDS + "'");
        }

        /// <summary>
        /// Load Tên sách trong bảng tbSach lên Combobox trong bảng tbDauSach
        /// </summary>
        /// <param name="cb">tên sách cần load lên</param>

        public void LoadDLLenCombobox(ComboBox cb)
        {
            db.LoadLenCombobox(cb," select distinct s.TenSach from tbDauSach s, tbSach ds where s.MaDauSach=ds.MaDauSach and ds.MaSach not in(select MaSach from tbPhieuMuon where NgayTra=N'" + "  /  /" + "')", 0);
        }

        /// <summary>
        /// Trả về số lượng sách có trong bảng tbSach
        /// </summary>
        /// <param name="TongSach">Số lượng sách được load lên txtTongSach</param>
        /// <returns>Trả về tổng sách</returns>
        public string LaySoLuongSach(string TongSach)
        {
            TongSach = db.LoadLenLable("select count(*) from tbDauSach");
            return TongSach;
        }

        /// <summary>
        /// Lấy số lượng của từng loại sách trong tbSach
        /// </summary>
        /// <param name="maDS"></param>
        /// <returns></returns>
        public string LayTongSach(string maDS)
        {
            return db.LoadLenLable("select SoLuong from tbDauSach where MaDauSach=N'" + maDS + "'");
        }

        public void LayMaDSLenCB(ComboBox cb,string  TenSach)
        {
            db.LoadLenCombobox(cb, "select MaDauSach from tbDauSach where TenSach=N'" + TenSach + "'", 0);
        }

        public void LayChuyenNganhLenCB(ComboBox cb, string TenSach)
        {
            db.LoadLenCombobox(cb, "select ChuyenNganh from tbDauSach where TenSach=N'" + TenSach + "'", 0);
        }

        public void LayMaDSLenCBTheoCN(ComboBox cb, string CN,string TenSach)
        {
            db.LoadLenCombobox(cb, "select MaDauSach from tbDauSach where ChuyenNganh=N'" + CN + "'and TenSach=N'"+TenSach+"'", 0);
        }

        public void LoadCNLenCB(ComboBox cb)
        {
            db.LoadLenCombobox(cb, "select distinct ChuyenNganh from tbDauSach", 0);
        }

        public void TraCuuSachTu2TieuChi(DataGridView dg, string tentruong1,string tieuchi1, string tentruong2, string tieuchi2)
        {
            db.LoadLenDG(dg,"select * from tbDauSach where "+tentruong1+"=N'"+tieuchi1+"'"+" or "+tentruong2+"=N'"+tieuchi2+"'");
        }

        public void LoadLenDGThongKeSach(DataGridView dg, string TenNXB)
        {
            db.LoadLenDG(dg, "select S.* from tbDauSach S,tbNXB NXB where S.MaNXB=NXB.MaNXB and NXB.TenNXB=N'"+TenNXB+"'");
        }

        public void LoadLenDGTKSachTheoTG(DataGridView dg, string TenTG)
        {
            db.LoadLenDG(dg, "select S.* from tbDauSach S,tbTG where S.MaTG=tbTG.MaTG and tbTG.TenTG=N'" + TenTG + "'");
        }

        public void ThongKeSachConInTV(DataGridView dg)
        {
            db.LoadLenDG(dg, "select distinct s.* from tbDauSach s, tbSach ds where s.MaDauSach=ds.MaDauSach and ds.MaSach not in(select MaSach from tbPhieuMuon where NgayTra=N'" + "  /  /" + "')");
        }

        public void ThongKeSachTon(DataGridView dg)
        {
            db.LoadLenDG(dg, "select distinct * from tbDauSach where MaDauSach not in(select MaDauSach from tbSach ds where MaSach in(select MaSach from tbPhieuMuon))");
        }

        public void ThongKeSachMuonMax(DataGridView dg)
        {
            db.LoadLenDG(dg, "select * from tbDauSach where ");
        }

        public void TimKiemSachNangCao(DataGridView dg, string DL)
        {
            db.LoadLenDG(dg,"select * from tbDauSach where TenSach like N'%"+DL+"%'");
        }
    }
}
